import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;

import java.io.IOException;

public interface PlcCompilerInterface {
    public interface LoadPlcStStream extends PlcCompilerInterface{

        abstract  public CharStream LoadPlcStreamFromFileName() throws IOException;

    }//从文件名读入PLCST源码字符流

    public interface LexerOutTokenStream extends PlcCompilerInterface{

        CommonTokenStream OutLexTokenStream(CharStream charstream);
    }//处理读入的字符流，输出词法流

    public interface ParserOutAst extends PlcCompilerInterface{

        abstract public ParseTree OutParserAst(CommonTokenStream commonTokenStream);

    }//处理读入的词法流，输出抽象语法树

    public interface ParserOutSymbolTableAndCpp extends PlcCompilerInterface{

        abstract public void OutCppFile();

        abstract public void OutSymbolTable();

    }
    //处理读入的抽象语法树，加载监听器或者访问器，输出Cpp文件和符号表

    public interface StaticSemanticCheckInterface extends PlcCompilerInterface{

        abstract  void StaticSemanticCheck();

    }//静态语义检查接口

}
